/**
 * @description  封装获取定位经纬度   坐标使用gcj02
 */
export function getLocation() {  
    return new Promise((resolve, reject) => {  
        uni.getLocation({  
            cacheTimeout: 1,
            type: 'gcj02', 
            isHighAccuracy: true,
            success: (res) => {  
                const { latitude, longitude } = res;  
                resolve({ latitude, longitude });  
            },  
            fail: (err) => {  
                uni.showModal({
                title: '提示',
                content: '定位获取失败，请检查网络是否连接，或检查软件是否开启定位功能',
                confirmText: '确定',
                });
                reject(err);  
            }  
        });  
    });  
}
/**
 * @description  封装请求数据   坐标使用gcj02
 * @param //key: 'YQNBZ-R4BCH-XDMDZ-WKWDP-FLBNO-FMBHI', 
 * @param   //https://apis.map.qq.com/ws/geocoder/v1/?location=location,  腾讯官方逆解析接口，可直接复制
 */
export function getRequest (location) {
    return new Promise((resolve, reject) => {
        uni.request({
            url: 'https://apis.map.qq.com/ws/geocoder/v1/?location=location', //腾讯官方逆解析接口，可直接复制
            data: {
            location: location,
            key: 'YQNBZ-R4BCH-XDMDZ-WKWDP-FLBNO-FMBHI', //自己申请的Key
            },
            method: 'GET',
            success(ret) {
                resolve(ret)
            },
            fail(err) {
                reject(err);
            }
        });
            
     
    });
}

    /* 
    :param aLon: double 经度 
    :param aLat: double 纬度 
    :param pointList: list [{latitude: 22.22, longitude: 113.113}...] 多边形点的顺序需根据顺时针或逆时针，不能乱 
    */
    export function isPointInPolygon  (aLat, aLon, pointList) {
    var iSum = 0
    var iCount = pointList.length

    if (iCount < 3) {
        return false
    }
    //  待判断的点(x, y) 为已知值
    var y = aLat
    var x = aLon
    for (var i = 0; i < iCount; i++) {
        var y1 = pointList[i].latitude
        var x1 = pointList[i].longitude
        if (i == iCount - 1) {
            var y2 = pointList[0].latitude
            var x2 = pointList[0].longitude
        } else {
            var y2 = pointList[i + 1].latitude
            var x2 = pointList[i + 1].longitude
        }
        // 当前边的 2 个端点分别为 已知值(x1, y1), (x2, y2)
        if (((y >= y1) && (y < y2)) || ((y >= y2) && (y < y1))) {
            //  y 界于 y1 和 y2 之间
            //  假设过待判断点(x, y)的水平直线和当前边的交点为(x_intersect, y_intersect)，有y_intersect = y
            // 则有（2个相似三角形，公用顶角，宽/宽 = 高/高）：|x1 - x2| / |x1 - x_intersect| = |y1 - y2| / |y1 - y|
            if (Math.abs(y1 - y2) > 0) {
                var x_intersect = x1 - ((x1 - x2) * (y1 - y)) / (y1 - y2);
                if (x_intersect < x) {
                    iSum += 1
                }
            }
        }
    }
    if (iSum % 2 != 0) { //true就是在
        return true
    } else { //false就是不在
        return false
    }
}

